package cn.topevery.garden.entity.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.topevery.garden.entity.po.ProjectManagementFile;
import cn.topevery.garden.entity.serializer.GeometrySerializer;
import com.alibaba.fastjson.annotation.JSONField;
import hw.topevery.framework.dto.PointDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.locationtech.jts.geom.Geometry;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

/**
 * 项目管理信息表 视图
 *
 * @author code-generate
 * @date 2022-02-15
 */
@Data
@ApiModel(value = "ProjectManagement 视图", description = "项目管理信息表 视图")
public class ProjectManagementVO implements Serializable{
    /**
     * 自增id
     */
    private Integer id;

        /**
     * 项目编码
     */
    @ApiModelProperty(value = "项目编码")
    @Excel(name = "项目编码", orderNum = "0")
    private String projectCode;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称")
    @Excel(name = "项目名称", orderNum = "0")
    private String name;

    /**
     * 甲方单位
     */
    @ApiModelProperty(value = "甲方单位")
    @Excel(name = "甲方单位", orderNum = "0")
    private String partyA;

    /**
     * 甲方负责人
     */
    @ApiModelProperty(value = "甲方负责人")
    @Excel(name = "甲方负责人", orderNum = "0")
    private String principalA;

    /**
     * 甲方联系方式
     */
    @ApiModelProperty(value = "甲方联系方式")
    @Excel(name = "甲方联系方式", orderNum = "0")
    private String telephoneA;

    /**
     * 乙方单位
     */
    @ApiModelProperty(value = "乙方单位")
    @Excel(name = "乙方单位", orderNum = "0")
    private String partyB;

    /**
     * 乙方负责人
     */
    @ApiModelProperty(value = "乙方负责人")
    @Excel(name = "乙方负责人", orderNum = "0")
    private String principalB;

    /**
     * 乙方联系方式
     */
    @ApiModelProperty(value = "乙方联系方式")
    @Excel(name = "乙方联系方式", orderNum = "0")
    private String telephoneB;

    /**
     * 第三方单位
     */
    @ApiModelProperty(value = "第三方单位")
    @Excel(name = "第三方单位", orderNum = "0")
    private String partyC;

    /**
     * 第三方负责人
     */
    @ApiModelProperty(value = "第三方负责人")
    @Excel(name = "第三方负责人", orderNum = "0")
    private String principalC;

    /**
     * 第三方联系方式
     */
    @ApiModelProperty(value = "第三方联系方式")
    @Excel(name = "第三方联系方式", orderNum = "0")
    private String telephoneC;

    /**
     * 项目状态 0 在建 1 维护 3 结束 
     */
    @ApiModelProperty(value = "项目状态 0 在建 1 维护 3 结束 ")
    @Excel(name = "项目状态 0 在建 1 维护 3 结束 ", orderNum = "0")
    private Integer projectStatus;

    /**
     * 项目类型 1 新建项目 2 维护项目 
     */
    @ApiModelProperty(value = "项目类型 1 新建项目 2 维护项目 ")
    @Excel(name = "项目类型 1 新建项目 2 维护项目 ", orderNum = "0")
    private Integer projectType;

    /**
     * 建设开始时间
     */
    @ApiModelProperty(value = "建设开始时间")
    @Excel(name = "建设开始时间", orderNum = "0")
    private LocalDate startDate;

    /**
     * 建设开始时间
     */
    @ApiModelProperty(value = "建设开始时间")
    @Excel(name = "建设开始时间", orderNum = "0")
    private LocalDate endDate;

    /**
     * 项目内容描述
     */
    @ApiModelProperty(value = "项目内容描述")
    @Excel(name = "项目内容描述", orderNum = "0")
    private String desc;

    /**
     * 附件
     */
    @ApiModelProperty(value = "附件")
    @Excel(name = "附件", orderNum = "0")
    private String fileUrl;

    @ApiModelProperty(value = "附件")
    private List<ProjectManagementFile> fileList;

    @ApiModelProperty(value = "范围点信息")
    private List<List<PointDto>> mapRangesPoints;

    @ApiModelProperty(value = "地址")
    @Excel(name = "地址", orderNum = "0")
    private String address;

    @ApiModelProperty(value = "经度")
    @Excel(name = "经度", orderNum = "0")
    private Float lng;

    @ApiModelProperty(value = "纬度")
    @Excel(name = "纬度", orderNum = "0")
    private Float lat;

    @ApiModelProperty(value = "范围")
    @Excel(name = "范围", orderNum = "0")
    @JSONField(serializeUsing = GeometrySerializer.class, deserializeUsing = GeometrySerializer.class)
    private Geometry mapRanges;

    /**
     * 计算空间数据
     */
    @ApiModelProperty(value = "计算空间数据")
    @Excel(name = "计算空间数据", orderNum = "0")
    private String geoWkt;

}
